// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/bailout-reason.h"
#include "src/base/logging.h"

namespace v8 {
namespace internal {

#define ERROR_MESSAGES_TEXTS(C, T) T,

    const char* GetBailoutReason(BailoutReason reason)
    {
        DCHECK_LT(reason, BailoutReason::kLastErrorMessage);
        DCHECK_GE(reason, BailoutReason::kNoReason);
        static const char* error_messages_[] = {
            BAILOUT_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
        };
        return error_messages_[static_cast<int>(reason)];
    }

    const char* GetAbortReason(AbortReason reason)
    {
        DCHECK_LT(reason, AbortReason::kLastErrorMessage);
        DCHECK_GE(reason, AbortReason::kNoReason);
        static const char* error_messages_[] = {
            ABORT_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
        };
        return error_messages_[static_cast<int>(reason)];
    }

    bool IsValidAbortReason(int reason_id)
    {
        return reason_id >= static_cast<int>(AbortReason::kNoReason) && reason_id < static_cast<int>(AbortReason::kLastErrorMessage);
    }

#undef ERROR_MESSAGES_TEXTS
} // namespace internal
} // namespace v8
